//
// Created by mi on 2025/3/12.
//
#include <iostream>
#include <vector>
#include <utility> // 包含 std::forward

// 定义一个简单的类
class MyClass {
public:
//    MyClass(int a) {
//        std::cout << "Constructor with int: " << a << std::endl;
//    }
    MyClass() {
    }

    MyClass(MyClass &myClass) {
       // std::cout << "Constructor with const string&: " << str << std::endl;
        std::cout << "Constructor with const string&: " <<"" << std::endl;
    }
    MyClass(MyClass &&myClass) {
        // std::cout << "Constructor with const string&: " << str << std::endl;

    }
//
//    MyClass(std::string&& str) {
//        std::cout << "Constructor with string&&: " << str << std::endl;
//    }
    MyClass(const std::string& str,int a,int b) {
        std::cout << "Constructor with const string&: " << str << std::endl;
    }
};

// 完美转发的函数模板
template <typename... Args>
void createObject(Args&&... args) {
    MyClass obj(std::forward<Args>(args)...); // 完美转发参数到构造函数
}

int main() {
//    createObject(10); // 调用 int 构造函数
//    createObject(std::string("Hello")); // 调用 const string& 构造函数
//    createObject("World"); // 调用 const char* 构造函数（隐式转换为 std::string）
//    createObject(std::move(std::string("Move"))); // 调用 string&& 构造函数


   // createObject("",10,5); // 调用 string&& 构造函数
    MyClass a;
    createObject(a);

    return 0;
}